#pragma once
#include <QString>
#include <list>

//建造者模式的ModRun（Builder）;

//建造和组装分离;
//获取食物和输出食物分离;

//食物基类;
class IFood
{
public:
    //获取食物名称;
    virtual QString GetFoodName() = 0;

    //获取食物价格;
    virtual float GetFoodPrice() = 0;
};

//食物建造者基类;
class InterFaceFoodBuilder
{
public:

    //获取食物;
    virtual void CreateFood(size_t uNum) = 0;

    //输出的食物;
    virtual std::list<std::shared_ptr<IFood>> GetFoodItems() = 0;
};

//指挥基类;
class InterFaceDirector
{
public:

    //构建产品;
    virtual void directFoods(std::shared_ptr<InterFaceFoodBuilder> builder, size_t uNum) = 0;

    //输出的产品;
    virtual std::list<std::shared_ptr<IFood>> GetComboItems() = 0;
};
